var fileupload = (function ($,uploadify,u) {
	var v_settings={
			multi:false,//是否允许多文件上传
			url:"localhost",//上传url
			callback:function(){},//回调函数
			fileTypeDesc:'Image Files',//上传文件的类型  默认为所有文件    'All Files'  ;  '*.*'
			fileTypeExts:'*.jpg; *.png',//允许上传的文件后缀
			uploadLimit:5,//最大上传文件数量
            queueSizeLimit:5,//队列最多显示的任务数量
            fileSizeLimit:20,//上传文件的大小限制 KB
            waterButton:false,//是否显示水印设置选框
            width:420,//窗口宽度
            height:300,//窗口高度            
            swf:'_upload/uploadify.swf'
		};
	var v_dialog=null;
	var v_uploaddify=null;
	//初始化弹出框
	function dialogInit(){
    	var h=v_settings.height;
    	var w=v_settings.width;
    	v_dialog = dialog({
    		fixed: true,
   	     	title: '文件上传',
   	     	okValue: '文件上传',
   	     	zIndex:99999999,
   	     	ok:function(){
   	     		$('#uploadify_file').uploadify('upload','*');
   	     		return false;
   	     	},
   	     	cancelValue: '关闭',
   	     	cancel:function(){
   	     		u.close();
   	     		$('#uploadify_file').uploadify('cancel','*');
   	     		return true;
   	     	},
   	    });
    	
    	if(v_settings.url==null||v_settings.url==''){
    		var d = dialog({
    		    title: '提示',
    		    content: '文件上传URL不允许为空!',
    		    okValue: '确定',
    		    ok:true,
    		});
    		d.width(200);
    		d.show();
    		return;
    	}
    	
    	if(v_settings.callback!=null||v_settings.callback!=''){
       	 	v_callback=v_settings.callback;
    	}
    	if(v_settings.waterButton==true||v_settings.waterButton=='true'){
    		v_dialog.statusbar('<label>添加水印：<select id="watermark"><option value="-1">无</option><option value="0">居中</option><option value="1">左上</option><option value="2">右上</option><option value="3">左下</option><option value="4">右下</option></select></label>');
    	}
    	v_dialog.height(h);
    	v_dialog.width(w);
    	v_dialog.content('<input type="file" name="uploadify" id="uploadify_file" /><div style="width:'+w+'px; height:'+(h-30)+'px; overflow:auto;text-align: left;"><div id="fileQueue"></div><div id="_uplad_err"></div><div id="_uplad_img"></div></div>');
    	return v_dialog;
    };
    var uploadify_onSelectError = function(file, errorCode, errorMsg) {  
        var msgText = "错误信息:\n\n";  
        switch (errorCode) {  
            case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:  
                //this.queueData.errorMsg = "每次最多上传 " + this.settings.queueSizeLimit + "个文件";  
                msgText += "每次最多上传 " + this.settings.queueSizeLimit + "个文件";  
                break;  
            case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:  
                msgText += "文件 [" + file.name + "]大小超过系统限制( 限制" + this.settings.fileSizeLimit + "KB )";  
                break;  
            case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:  
                msgText += "文件 [" + file.name + "]文件大小为0";  
                break;  
            case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:  
                msgText += "文件 [" + file.name + "]格式不正确，仅限 " + this.settings.fileTypeExts;  
                break;  
            default:  
                msgText += "错误代码：" + errorCode + "\n" + errorMsg;  
        }  
        this.queueData.errorMsg =msgText;
    };
    //初始化上传插件
    function uploaddifyInit(){
    	return $("#uploadify_file").uploadify({
            //指定swf文件
            'swf': BASE_URL+v_settings.swf,
            //后台处理的页面
            'uploader':v_settings.url,
            'formData':{'watermark':-1},
            //按钮显示的文字
            'buttonText': '选择图片',
            //按钮显示的高度和宽度，默认 height 30；width 120
            //'height': 30,
            //'width': 120,
            //上传文件的类型  默认为所有文件    'All Files'  ;  '*.*'
            //在浏览窗口底部的文件类型下拉菜单中显示的文本
            'fileTypeDesc':v_settings.fileTypeDesc,
            //允许上传的文件后缀
            'fileTypeExts':v_settings.fileTypeExts,
            //发送给后台的其他参数通过formData指定
            //'formData': { 'someKey': 'someValue', 'someOtherKey': 1 },
            //上传文件页面中，你想要用来作为文件队列的元素的id, 默认为false  自动生成,  不带#
            'queueID': 'fileQueue',
            'requeueErrors':false,
            //选择文件后自动上传
            'auto': false,
            //设置为true将允许多文件上传
            'multi': v_settings.multi,
//            'removeCompleted':false,
            'uploadLimit':v_settings.uploadLimit,
            'queueSizeLimit':v_settings.queueSizeLimit,
            'fileSizeLimit':v_settings.fileSizeLimit,
            //检测FLASH失败调用
	        'onFallback':function(){
	            alert("您未安装FLASH控件，无法上传图片！请安装FLASH控件后再试。");
	        },
	        'overrideEvents':['onSelectError'],
	        'onSelectError':uploadify_onSelectError,
	        //浏览窗口打开事件
	        'onDialogOpen':function(){
	        	$("#_uplad_img").empty().hide();
	        	$("#_uplad_err").empty().hide();
	        },
	        //上传到服务器，服务器返回相应信息到data里
	        'onUploadSuccess':function(file, data, response){
	        	//"code":"SUCCESS","data":{"id":187,"url":"http://192.168.0.4:8082/res\\shop\\b\\2017\\3\\0ba99761965f4c1c9b5251913751ed62_0.png"},"subCode":0,"success":true}
	        	var obj = eval("("+data+")");
	        	if(obj.success==true){
	        		var result = obj.data;
	        		$("#_uplad_img").append('<img style="width: 40%;margin: 10px" alt="'+file.name+'" src="'+result.url+'" />').show();
		        	v_settings.callback.call(this,data,file,response);
	        	}else{
	        		$("#_uplad_err").append('<p><span style="color:red;">文件 '+file.name+' 上传状态:'+(obj.subMsg||obj.msg)+'</span></p>').show();
	        		v_settings.callback.call(this,data,file,response);
	        	}
	        },
	        'onUploadStart':function(){
	        	var wm = $('#watermark').val();
   	     		if(wm!=null&&wm!=''){
   	     			$('#uploadify_file').uploadify('settings','formData',{'watermark':wm});
   	     		};
	        	
	        }
        });
    }
    
	u.init=function(setVars){
		v_settings = $.extend(v_settings,setVars);
		if(v_dialog!=null){
			v_dialog.remove();//清除之前的弹框
			v_dialog=null;
		}
		v_dialog = dialogInit();//重新始化弹框
		v_uploaddify = uploaddifyInit();
	};
	u.open=function(url,fn){
		if(url){
			v_settings = $.extend(v_settings,{'url':url,'callback':fn});
		}
		u.init();
		v_dialog.showModal(); 		
	};
	u.close=function(){
    	if(v_dialog!=null&&v_dialog.open){
    		v_dialog.close();
    	}        	
    };
    
	return u;
	
})($,window.uploadify,window.fileupload || {});
